package com.eian.boot.common.id.enums;

import lombok.Getter;

/**
 * ID主体内容类型枚举
 * 所有类型均自动根据配置选择存储方式（DB/Redis）
 *
 * @author alex.meng
 */
@Getter
public enum IdContentType {
    /**
     * 自定义（使用传入的原始ID）
     */
    CUSTOM("CUSTOM", "自定义"),

    /**
     * 号段ID（根据配置自动选择DB或Redis）
     */
    SEGMENT("SEGMENT", "号段ID"),

    /**
     * 序列号（根据配置自动选择DB或Redis）
     */
    SEQUENCE("SEQUENCE", "序列号"),

    /**
     * 雪花ID
     */
    SNOWFLAKE("SNOWFLAKE", "雪花ID"),

    /**
     * UUID（简化格式，无连字符）
     */
    UUID("UUID", "UUID"),

    /**
     * UUID标准格式（带连字符）
     */
    UUID_STANDARD("UUID_STANDARD", "UUID标准");

    private final String code;
    private final String description;

    IdContentType(String code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据code获取枚举
     *
     * @param code 编码
     * @return 枚举值
     */
    public static IdContentType fromCode(String code) {
        if (code == null || code.isEmpty()) {
            return CUSTOM;
        }
        for (IdContentType type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        return CUSTOM;
    }
}


